#ifndef __FILELISTER_H__
#define __FILELISTER_H__

// Qt Includes
#include <QPair>
#include <QRunnable>
#include <QStringList>

// Qt Declarations
class QDir;

// ******************************************************************
// CFileLister
// ******************************************************************
class CFileLister : public QRunnable
{
public:
/////////////////////////////////////////////////////////////////////
// Construction & Destruction
/////////////////////////////////////////////////////////////////////
	CFileLister(const QString &strDirectory,
			const QStringList &slFileExtensions);
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Implementation
/////////////////////////////////////////////////////////////////////
	void run();
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Member Functions
/////////////////////////////////////////////////////////////////////
	const QPair<QString, QStringList> &getDirsRelativeFilePaths() const { return m_theDirsRelativeFilePaths; }
	const QStringList &getAbsoluteFilePaths() const { return m_slAbsoluteFilePaths; }
/////////////////////////////////////////////////////////////////////

private:
/////////////////////////////////////////////////////////////////////
// Member Functions
/////////////////////////////////////////////////////////////////////
	void scanDir(const QDir &theDir);
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Member Variables
/////////////////////////////////////////////////////////////////////
	const QString m_strDirectory;
	const QStringList m_slFileExtensions;
	QPair<QString, QStringList> m_theDirsRelativeFilePaths;
	QStringList m_slAbsoluteFilePaths, m_slRelativeFilePaths;
/////////////////////////////////////////////////////////////////////
};

#endif // #ifndef __FILELISTER_H__
